package com.cn.wanxi.util;

public class ReadMe {
    /**
     * 第四阶段：做一个完整的后台管理系统
     * servlet+JDBC
     * 目的：学会运用框架，或者模板（别人的，第三方的）
     * 能够快速拿着别人的模板进行简单的二次开发
     * ---------------------
     * 要么拿到它的代码
     * 要么拿到它的需求文档
     * ------------------------
     * 怎么通过Java来添加数据到数据库？
     * 需要掌握后台的几个层次？
     * model层：实体层：它和数据库表相对于:区别：命名规则不同
     * servlet层：页面控制层  和页面相关
     *  以后，传递参数如果有多个参数，最好封装到一个对象里面
     *  浏览器默认是get方法，而我们后台写的是post方法，如果要去测试
     *  有很多种方法
     *  1.测试类:用到第三方包，测试方法
     *  2.postman:测试接口
     *  后台和前端已经打通
     * service层：服务逻辑层 写服务逻辑的地方
     * dao层：数据持久层  这里就是和数据库打交道:所有的增删查改操作都在之类完成
     * 思考？每一个表都有CRUD,那么是不是有很多相同的代码？所以，会在这里封装一个增删改查的操作
     * JDBC:名字可以随便命名，这里用于连接数据库，执行数据库操作和关闭数据库操作
     * 不要在当前类里面写和当前类无关的代码，不是自己的代码不要写在自己的 类里面
     * 面试？手写一个JDBC？
     * 步骤？六大步骤
     * 以后你们的包是要什么，复制什么，不要把不相干的包放进来，有可能兼容问题，覆盖问题等问题
     * ----------------------------------------------------
     * 后台代码步骤：
     * 1.servlet
     * 2.service
     * 3.dao
     * 4.JDBC（已经写好，直接调用即可）
     */
    /**
     * 2022-8-3
     * 对于model层，和数据库的表相互对应，
     * 数据库里面的内容一般情况下都有增删查改的操作，
     * 如果要操作这些方法，就应该有一个前端页面相对于
     * 查询的时候，要么由一条，要么由很多条，要么什么都没有
     * 后台返回给前端的数据应该时能够看懂的，而不是对象的地址
     * 对数据进行强转
     * ------------------------------
     * 强制转换的数据格式应该和前端要的的格式一致
     * 一般情况下，以后前后端的数据都是通过json格式进行传递
     * 所以，需要将后台的数据转换为json格式
     *查询数来的数据由问号，问号就是乱码
     * -----------------------------
     * 对于前端，返回的数据类型太多，应该统一数据格式
     * 要做数据库操作，最好写一个统一的数据格式：ResultModel
     * 那么我们设置数据格式应该在服务逻辑层
     * 所以，每次都需要对结果进行创建对象
     *  ResultModel resultModel = new ResultModel();
     *         resultModel.setCount(count);
     *         resultModel.setMsg("");
     *         resultModel.setCode(0);
     *         然后对对象里面的属性进行赋值
     *         然后将对象返回给前端
     * --------------------------------------------------
     * 今日任务：
     * 将所有的表的增删查改的六个方法，全部代码写完
     * 明天课程安排：封装ResultModel，封装后台代码
     */
    /**
     * 2022-8-4
     * 1.servlet   六个步骤
     *          1）乱码
     *          2）得到前端的数据
     *          3）将数据进行封装到model
     *          4）调用服务逻辑层
     *          5）得到返回结果
     *          6）将结果返回给前端
     * 2.service   服务逻辑层  ：写逻辑代码的地方
     * 3.dao   数据持久层
     *          1)写sql语句
     *          2）调用JDBC
     *          3）查询的时候，需要将返回的结果进行解析
     *--------------------------------------------------
     * 为什么要返回统一格式？
     * 返回统一格式应该怎么写？根据前端需要？前后端进行交流
     * 因为我们用了前端框架模块：layui，layui的前端返回的格式
     * {
     *     code:0,
     *     msg:'',
     *     count:'',
     *     data:[]
     * }
     * ------------------------------------------
     * 服务逻辑层每一个返回值都是ResultModel
     * 每一个方法里面都有ResultModel的赋值
     * 如果代码里面超过两个代码一致的情况下，都会想到封装
     * 在服务逻辑层，将ResultModel单独写方法，为了少些代码
     * 对代码再次封装
     * private ResultModel getResultModel(int count, int code, String msg, Object data)
     * ------------------------------------
     * 一个类里面只能写自己的代码，不属于自己的代码就应该踢出去
     *
     *
     * 需要封装一个工具类，主要目的，
     * 就是为了前端传递到后台的值有问题，不至于数据库数据错误
     * 如果你们的密码直接存放于数据库，是不正确的，应该加密
     * ------------------------------------------------
     * 后台所有的代码，三层代码都应该会写
     * Java  通配符：泛型 BaseService<E>
     * ------------------------------------------------
     * 现在位置，后台代码正常的增删改查都已经讲完，
     * 任务：将所有的表的增删改查继续做完，然后进行封装
     */
    /**
     * 2022-8-5 文件上传
     * 文件上传：对于Java后台来说有两个事情
     * 1.必须要有jar包
     * 2.必须写Java代码
     * ----------------------------------------------------
     *
     */
    /**
     * 2022-8-9
     * 1.数据类型定义
     * 2.方法定义
     * 3.登录流程
     * 4.登录验证
     * 5.form表单监听
     */
    /**
     * 2022-8-11
     * if else尽量少用，甚至不要用else
     * 不要到处嵌套
     * 前端页面如果用的是框架，只要不是在一个框架里面，多个页面引入都可以用同样的id
     * 建议：用不同的id
     * 用户查询：
     * 1.创建member-list.html
     * 2.添加表格<table class="layui-hide" id="test" lay-filter="test"></table>
     * 3.添加操作按钮：<script type="text/html" id="barDemo">
     * 4.添加js文件member-list.js
     * 5.赋值表格渲染
     *      1）修改id
     *      2）修改访问后台的路径
     *      3）修改列：field 对应model层里面的属性名
     */
    /**
     * 2022-8-12
     * 对于生日：只需要年月日
     * 1.js里面进行日期格式化
     * 2.java里面进行日期格式化
     * 3.mysql日期格式化：（推荐）
     * 以后，mysql sql语句不允许出现* 查询所有,要什么给什么
     * ------------------------------------------------
     * 自定义模板
     * 编辑状态：sql语句的三种写法
     * 删除
     * 封装myAjax.js文件
     * ---------------
     * 无论后端还是前端，以后只要出现两次以上，就可能会进行封装
     * 日报：
     * attr和val和html的区别？
     * attr 改变div的属性值
     * $("#id").attr("class","aaa");
     * val得到input表单的值或者对input表单赋值
     *  $("#id").val(2);
     *  let name=$("#id").val();
     * html得到或者对div赋值
     *
     */
    /**
     * 2022-8-15
     * 用户新增
     * 1.创建页面：将表单的正确的使用
     * 2.创建js：form表单渲染，日期正常弹出来
     * 3.监听提交按钮：之前需要做自定义验证，然后得到所有表单里面的数据
     * 4.通过ajax访问Java后台代码
     * 用户编辑：
     * 1.点击编辑按钮，弹出一个编辑页面：不需要修改密码
     * 2.点击按钮的同时，应该得到当前数据的id，并且将id传递到编辑页面
     * 3.打开编辑页面后，页面加载完成，需要根据当前的id查询出所有需要的数据
     * 4.将数据赋值到表单
     * 5.点击编辑按钮，进行修改数据
     * --------------------------------
     * 模糊查询：
     * 1.将表格里面的数据都要做一个模糊的表单
     * 2.得到所有数据后进行渲染表格 ，因为页面加载完成也会渲染表格，所以提取公共方法
     * 3.在渲染的时候添加where:data
     * 4.在servlet里面添加模糊查询的代码（取得前端的值和封装）
     * 5.sql语句的拼接
     * 注意：查询所有和查询总条数的条件应该一致
     *
     *
     */
    /**
     * 2022-8-16 产品
     * 产品新增
     * 1.需要将菜系管理做完，页面加载完成的时候，需要将正确的菜系全部导入进下拉菜单
     * 2.图片上传
     *      1）修改html代码
     *      2）增加js代码
     *      3）将得到的路径赋值给一个全局变量：用于增加
     * 3.富文本
     *      1）修改html代码
     *      2）增加js代码
     * 4.点击增加按钮 得到所有数据
     *      data = data.field;
     *      data.imgHref = imgHref;
     *      data.content = layedit.getContent(index)
     *      let res=myAjax("/back/product/add",data,'post');
     *
     */
    /**
     * 2022-8-17 产品编辑
     * 1.点击编辑按钮，弹出一个编辑页面,将当前id传递到另一个页面
     * 2.页面加载完成，加载layui框架：同时加载图片上传和富文本
     * 3.根据id查询出当前数据信息
     * 4.赋值到页面
     * 5.监听编辑按钮，将得到的值，传递给后台进行编辑
     * ------------------------------------------
     * 编辑难点：
     * 1.赋值：下拉菜单
     * 2.对富文本的进行赋值
     * 3.需要重新对data进行id赋值
     * ------------------------------------
     * 过滤器：安全认证
     * 1.不能让用户直接访问页面
     *      1)用户访问页面的时候，进行判断用户是否已经登录
     *      2）怎么判断？可以在用户登录成功以后给一个标识符，
     *      只要用户访问其他页面的时候判断当前的标识符是否存在
     *      3）如果存在，则让它继续访问，如果不存在，则直接跳到登录页面
     *      4)在什么时候判断？肯定是页面加载的时候就需要判断
     * 2.也不能让用户直接访问后台接口
     *      1）用户访问后台接口的时候，需要判断用户是否已经登录
     *      2）在用户登录成功需要加一个标识符，在其下次访问接口的时候进行判断
     *      3）如果存在，则继续，不存在，则返回到登录页面
     *      4）什么判断呢？用户访问后台接口之前进行判断
     *前端和后端的session不一样，分开的，独立的
     *
     *
     */
}
